Skip to content

Hold plugin credentials in a private Held, off the contract's Redacted (busbar #1021) - #16

Merged
MattJackson merged 2 commits into
devfrom
lane-secret-sealed-port
Oct 15, 2026
Merged

MattJackson merged 2 commits into
devfrom
lane-secret-sealed-port

Conversation

@MattJackson

Copy link
Copy Markdown
Contributor

Ports this plugin off busbar_contract::Redacted so it builds against both the current contract and the post-busbar#1021 contract, where Redacted<T> becomes a sealed Secret<T> and expose_secret is deleted.

The access token, OAuth nonce and client secret the plugin keeps across a login flow are its own memory, not values lent by the kernel, so they move to a crate-private Held<T> (src/held.rs): Debug/Display print [REDACTED], no serde, zeroize on drop, constant-time PartialEq, Clone, and a single pub(crate) reveal(). Same pattern as GetBusbar/busbar-auth-oauth#16. expose_secret() call sites become reveal(). constant_time_eq was already imported from the contract root.

held.rs carries tests for the redaction and equality behaviour. The crate no longer names Redacted or expose_secret. Not built locally; relying on CI.

…s sealed Secret

busbar #1021 renames the contract's Redacted<T> to a SEALED Secret<T>: its
raw accessor takes a kernel seal and expose_secret is gone; a plugin holds
no seal. The access token, the OAuth nonce and the client secret this
plugin keeps across a login flow are its own memory, so they move to a
crate-private Held<T> (src/held.rs) with the former wrapper's semantics:
Debug and Display print [REDACTED], no serde, zeroize on drop, constant-time
PartialEq, Clone, and one pub(crate) reveal(). Same pattern as auth-oauth #16.

The plugin no longer names Redacted or expose_secret and compiles against
the contract before and after #1021. constant_time_eq is already imported
from the contract root.
@MattJackson
MattJackson merged commit 1e14f4a into dev Oct 15, 2026
5 checks passed
@MattJackson
MattJackson deleted the lane-secret-sealed-port branch October 15, 2026 15:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant